/**
 * 温度偏移量历史记录测试脚本
 * 用于测试历史偏移量的记录和查询功能
 */

const API_BASE_URL = 'http://localhost:3000/api/health/temperature-calibration'

// 测试数据
const TEST_USER_ID = 68

/**
 * 测试获取指定时间点的偏移量
 */
async function testGetOffsetByTimestamp() {
  console.log('\n=== 测试获取指定时间点的偏移量 ===')
  
  const testTimestamps = [
    '2025-09-29T10:00:00Z',
    '2025-09-15T10:00:00Z',
    '2025-08-01T10:00:00Z'
  ]
  
  for (const timestamp of testTimestamps) {
    console.log(`\n--- 查询时间点: ${timestamp} ---`)
    
    try {
      const response = await fetch(API_BASE_URL, {
        method: 'PUT',
        headers: {
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({
          userId: TEST_USER_ID,
          timestamp: timestamp
        })
      })
      
      const result = await response.json()
      
      console.log('响应状态:', response.status)
      if (result.success) {
        console.log('偏移量信息:')
        console.log(`  锚定偏移量: ${result.data.anchor_offset}°C`)
        console.log(`  基线温度: ${result.data.baseline_temp}°C`)
        console.log(`  生效开始: ${result.data.effective_start_date}`)
        console.log(`  生效结束: ${result.data.effective_end_date || '当前有效'}`)
        
        // 模拟前端使用历史偏移量计算核心体温
        const deviceTemp = 34.5 // 假设的设备温度
        const coreTemp = deviceTemp + result.data.anchor_offset
        console.log(`  示例计算: 设备温度${deviceTemp}°C + 偏移量${result.data.anchor_offset}°C = 核心体温${coreTemp.toFixed(2)}°C`)
      } else {
        console.log('查询失败:', result.error)
      }
      
    } catch (error) {
      console.error(`查询时间点 ${timestamp} 失败:`, error)
    }
  }
}

/**
 * 测试获取时间范围内的偏移量记录
 */
async function testGetOffsetByDateRange() {
  console.log('\n=== 测试获取时间范围内的偏移量记录 ===')
  
  try {
    const response = await fetch(API_BASE_URL, {
      method: 'PUT',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        userId: TEST_USER_ID,
        startDate: '2025-08-01',
        endDate: '2025-09-30'
      })
    })
    
    const result = await response.json()
    
    console.log('响应状态:', response.status)
    if (result.success && result.data.offset_records) {
      console.log(`查询时间范围: ${result.data.start_date} 到 ${result.data.end_date}`)
      console.log(`找到 ${result.data.offset_records.length} 条偏移量记录:`)
      
      result.data.offset_records.forEach((record, index) => {
        console.log(`\n  记录 ${index + 1}:`)
        console.log(`    锚定偏移量: ${record.anchor_offset}°C`)
        console.log(`    基线温度: ${record.baseline_temp}°C`)
        console.log(`    生效开始: ${record.effective_start_date}`)
        console.log(`    生效结束: ${record.effective_end_date || '当前有效'}`)
        console.log(`    是否当前: ${record.is_current}`)
      })
    } else {
      console.log('查询失败:', result.error || '没有找到记录')
    }
    
  } catch (error) {
    console.error('查询时间范围失败:', error)
  }
}

/**
 * 测试温度校准（会触发偏移量历史记录）
 */
async function testTemperatureCalibrationWithHistory() {
  console.log('\n=== 测试温度校准（验证历史记录创建） ===')
  
  try {
    const response = await fetch(API_BASE_URL, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        userId: TEST_USER_ID,
        endDate: '2025-09-29'
      })
    })
    
    const result = await response.json()
    
    console.log('响应状态:', response.status)
    if (result.success) {
      console.log('校准成功，偏移量信息:')
      console.log(`  当前锚定偏移量: ${result.data.anchor_offset}°C`)
      console.log(`  基线是否更新: ${result.data.is_baseline_updated}`)
      
      if (result.data.is_baseline_updated) {
        console.log('  ✅ 基线已更新，应该已创建新的偏移量历史记录')
      } else {
        console.log('  ℹ️ 基线未更新，使用现有偏移量')
      }
    } else {
      console.log('校准失败:', result.error)
    }
    
  } catch (error) {
    console.error('温度校准失败:', error)
  }
}

/**
 * 主测试函数
 */
async function main() {
  console.log('开始测试温度偏移量历史记录功能...')
  console.log('测试用户ID:', TEST_USER_ID)
  console.log('功能：确保历史温度数据可以正确还原')
  
  // 1. 先执行温度校准，可能会创建偏移量历史
  await testTemperatureCalibrationWithHistory()
  
  // 2. 测试获取指定时间点的偏移量
  await testGetOffsetByTimestamp()
  
  // 3. 测试获取时间范围内的偏移量记录
  await testGetOffsetByDateRange()
  
  console.log('\n测试完成!')
  console.log('\n💡 使用说明:')
  console.log('- 前端可以通过时间戳查询历史偏移量')
  console.log('- 使用历史偏移量还原当时的核心体温显示')
  console.log('- 确保历史数据的一致性和准确性')
}

// 运行测试
if (require.main === module) {
  main().catch(console.error)
}

module.exports = {
  testGetOffsetByTimestamp,
  testGetOffsetByDateRange,
  testTemperatureCalibrationWithHistory
}
